////////////////////////////////////////////////////////////////////////////////
//
// Aranya Code
// author: TonyHack
// E-mail: tonyjobmails@gmail.com
//
// filename: traceback.h
// function:  堆栈相关函数声明
//
////////////////////////////////////////////////////////////////////////////////
#include <execinfo.h>

//////////////////////////////////////////////////////////////////
/// 调试，在程序中输出bt信息，来动态跟踪函数的调用
void print_trace_symbols(void)
{
	/// 堆栈的最大深度
	const int MAX_DEPTH = 32;
	
	void *traceback[MAX_DEPTH];
	size_t size = 0;
	char **btstrings;
	size_t pos = 0;
	
	size = backtrace(traceback, MAX_DEPTH);
	btstrings = backtrace_symbols(traceback, size);
	
	for(pos = 0; pos < size; ++pos)
	{
		cout << "[backtrace]" << pos << ": " << btstrings[pos] << endl;
	}
	
	free(btstrings);
}
//////////////////////////////////////////////////////////////////